home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
txl
/
rexxmdl2.lha
/
RexModula2
/
Txl
/
rmi.Grammar
< prev
next >
Wrap
Text File
|
1992-02-26
|
2KB
|
114 lines
% Syntax of Rex extended Modula-2
% Georg Etzkorn, GMD Karlsruhe, 25.2.91
% This is a variant of the original Modula-2 grammar
include "Modula2.Grammar"
% Now we give the extensions and other differences
% New compound tokens
compounds
=> &&
end compounds
% New keywords
keys
CALL WAIT ACCEPT REPLY SELECT
end keys
define statement
[assignment]
| [ProcedureCall]
| [CommunicationCall] % New statement form
| [IfStatement]
| [CaseStatement]
| [SelectStatement] % New statement form
| [WhileStatement]
| [RepeatStatement]
| [LoopStatement]
| [ForStatement]
| [WithStatement]
| EXIT
| RETURN [opt expression]
end define
define CommunicationCall
[CommName] ( [id] , [ExpList] ) [opt handle]
end define
define CommName
WAIT
| ACCEPT
| CALL
| REPLY
end define
define CommunicationPrimitive
[DelayStatement]
| [AbortStatement]
| [ForwardStatement]
| [ValidStatement]
| [TimeoutStatement]
end define
define DelayStatement
'DELAY ( [expression] )
end define
define AbortStatement
'ABORT ( [qualident] ) [opt handle]
end define
define ForwardStatement
'FORWARD ( [qualident] , [qualident] , [ExpList] ) [opt handle]
end define
define ValidStatement
'VALID ( [qualident] , [expression] )
end define
define TimeoutStatement
'TIMEOUT ( [expression] )
end define
define handle
WITH [id]
end define
% Modified syntax of statement sequences - requires semicolons
% on all statements (to make transforms simpler)
define StatementSequence
[repeat statement_semi]
end define
define statement_semi
[statement] ; [NL]
end define
% New statement SELECT
define SelectStatement
SELECT [IN][NL]
[alternative]
[repeat or_alternative]
[opt else_StatementSequence] [EX]
END
end define
define or_alternative
[NL]
'| [alternative]
end define
define alternative
[guard] : [IN][NL]
[StatementSequence] [EX]
end define
define guard
[opt BoolAnd] [CommunicationCall]
end define
define BoolAnd
[expression] &&
end define